package top.infopub.mgr.bpa.service;


import com.github.pagehelper.Page;
import top.infopub.generic.GenericService;
import top.infopub.mgr.bpa.domain.InnerAgrtDomain;
import top.infopub.mgr.bpa.domain.InnerLedgerDomain;
import top.infopub.mgr.bpa.vo.ContractManageVo;
import top.infopub.mgr.bpa.vo.InnerAgrtVo;
import top.infopub.mgr.common.vo.RspVo;
import top.infopub.model.bpa.BpaCompPlan;
import top.infopub.model.bpa.InnerAgrt;
import top.infopub.model.bpa.InnerAgrtSup;
import top.infopub.model.bpa.InnerListing;
import top.infopub.model.mkt.ProjectAttachment;
import top.infopub.security.vo.AuthorizationVO;

import java.text.ParseException;
import java.util.List;


public interface InnerAgrtService extends GenericService<InnerAgrt, String> {

    /**
     * 根据条件查询内部协议记录
     * @param innerAgrtVo
     * @return
     * @see
     */
    Page<InnerAgrtDomain> selectByDomainWhere(Page<InnerAgrtDomain> page, InnerAgrtVo innerAgrtVo) throws ParseException;

    /**
     * 内部协议台账
     * @param page
     * @param contractManageVo
     * @return
     * @see
     */
    Page<InnerLedgerDomain> selectByLedger(Page<InnerLedgerDomain> page,
                                           ContractManageVo contractManageVo) throws ParseException;


    RspVo selectProject();

    RspVo queryById(String id);

    RspVo saveAll(Integer submitType, AuthorizationVO userDtl, InnerAgrt innerAgrt, List<InnerListing> innerListings, InnerAgrtSup innerAgrtSup, List<BpaCompPlan> compPlan, List<ProjectAttachment> attachmentList,String bodyStr);

    InnerAgrt selectBySguid(String id);

//    /**
//     * 根据条件查询内部协议记录--我审批的列表
//     * @param InnerAgrtVo
//     * @return
//     * @see
//     */
//    Page<InnerAgrtDomain> selectMyCheckByDomainWhere(Page<InnerAgrtDomain> page,
//                                                     InnerAgrtVo innerAgrtVo);

//    /**
//     * 判断是否存在相同名称的内部协议名称
//     */
//    List<InnerAgrt> isExistInnerAgrtName(String InnerAgrtName,String proCode);
//
//    /**
//     * 判断是否存在相同名称的内部补充协议名称
//     */
//    List<InnerAgrt> isExistInnerAgrtSaName(String innerAgrtSaName,String proCode);
//
//    /**
//     * 添加-内部协议
//     */
//    void saveInnerAgrt(InnerAgrt innerAgrt, List<InnerAgrtSub> innerAgrtSubs,
//                       List<InnerAgrtDetail> innerAgrtDetails, List<InnerAgrtRate> innerAgrtRates,
//                       List<InnerAgrtAtt> innerAgrtAtts);
//
//    /**
//     * 获取同一个项目中最新的版本号
//     */
//    List<InnerAgrt> selectVersionNoByProCode(String proCode, String status, String extType);
//
//    /**
//     * 返回内部协议中的所有项目名称
//     */
//    List<InnerAgrt> selectInnerAgrt();
//
//    /**
//     * 根据内部协议项目编号查询相关带入信息
//     */
//    InnerAgrtDomain selectByInnerAgrtProCode(String proCode, String ids);
//
//    /**
//     * 根据合同签订日期 判断是否为  补充签订
//     */
//    InnerAgrt selectInnerAgrtSignDate();
//
//    /**
//     * 第一次添加为原合同时用
//     */
//    InnerAgrt selectByProCodeAndId(String ids, String proCode);
//
//    /**
//     * 根据内部协议项目编号查询相关带入信息(原合同id)
//     */
//    InnerAgrt selectByProCodes(String proCode);
//
//    /**
//     * 根据项目编号查询最新版本号
//     */
//    InnerAgrt selectVersionByProCode(String proCode);
//
//    /**
//     * 根据id查询内部协议信息
//     * @param id 主键id
//     * @return
//     * @see
//     */
//    InnerAgrtDomain queryById(String id);
//
//    /**
//     * 根据合同名称计算对内结算中的 期数(已审批通过)
//     */
//    int countByName(String names);
//
//    /**
//     * 根据id查询内部协议信息
//     * @param id 主键id
//     * @return
//     * @see
//     */
//    InnerAgrtDomain selectByIds(String id);
//
//    /**
//     * 补充签订
//     */
//    void sign(InnerAgrtVo innerAgrtVo, List<InnerAgrtAtt> innerAgrtAtts);
//
//    /**
//     * 详情
//     */
//    InnerAgrtVo queryByIds(String id);
//
//    /**
//     * 根据条件查询商务驾驶舱-总分包及设备合同分页记录
//     * @param page 分页参数
//     * @param type 公司类型
//     * @param orgId 公司id
//     * @param proName 项目名称
//     * @param extType 合同类别
//     * @param contractName 合同名称
//     * @return
//     * @see
//     */
//    Page<BpastPackDeviceDomain> selectBpastByDomainWhere(Page<BpastPackDeviceDomain> page,String type, String orgId,
//        String proName,String extType,String contractName);
//
//    /**
//     * 判断项目名称是否存在
//     */
//    List<InnerAgrt> isExistProName(String proCode);

}
